package com.br.sae.controls;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.br.sae.conexaobd.SistemaDAO;
import com.br.sae.model.dao.ProfessorBD;
import com.br.sae.model.dao.UsuarioBD;
import com.br.sae.model.entitys.Professor;
import com.br.sae.model.entitys.Usuario;

public class LogicaProfessorCrud implements Logica {

	@Override
	public String executa(HttpServletRequest req, HttpServletResponse res)
			throws Exception {

		String metodo = req.getParameter("Metodo");

		if (metodo.equals("inserirProfessor")) {
			String nome = req.getParameter("nome");
			String sexo = req.getParameter("sexo");
			String rua = req.getParameter("rua");
			String numero_S = req.getParameter("numero");
			int numero = 0;
			if(!numero_S.equals("")){
				numero = Integer.valueOf(numero_S);
			}
			String bairro = req.getParameter("bairro");
			String cidade = req.getParameter("cidade");
			String email = req.getParameter("email");
			String dataNascimentoProfessor = req.getParameter("dataNascimento");
			String estado = req.getParameter("estado");
			String cep = req.getParameter("cep");
			String telefone = req.getParameter("telefone");
			String login = req.getParameter("login");
			String senha = req.getParameter("senha");

			Professor professor = new Professor(nome, dataNascimentoProfessor,
					sexo, rua, numero, bairro, cidade, estado, cep, email,
					telefone);
			Usuario usuario = new Usuario(login, senha, "Professor");
			inserirProfessor(professor, usuario);
			return "/mvc?logica=LogicaFormProfessores";
			
		} else if (metodo.equals("alterarProfessor")) {
			String nome = req.getParameter("nome");
			String sexo = req.getParameter("sexo");
			String rua = req.getParameter("rua");
			String numero_S = req.getParameter("numero");
			int numero = 0;
			if(!numero_S.equals("")){
				numero = Integer.valueOf(numero_S);
			}
			String bairro = req.getParameter("bairro");
			String cidade = req.getParameter("cidade");
			String email = req.getParameter("email");
			String dataNascimentoProfessor = req.getParameter("dataNascimento");
			String estado = req.getParameter("estado");
			String cep = req.getParameter("cep");
			String telefone = req.getParameter("telefone");
			String login = req.getParameter("login");
			String senha = req.getParameter("senha");

			Professor professor = new Professor(nome, dataNascimentoProfessor,
					sexo, rua, numero, bairro, cidade, estado, cep, email,
					telefone);
			Usuario usuario = new Usuario(login, senha, "Professor");
			professor.setId(Integer.valueOf(req.getParameter("id")));
			alterarProfessor(professor, usuario);
			return "/mvc?logica=LogicaFormProfessores";
		} else {
			excluirProfessor(Integer.valueOf(req.getParameter("id")));
			return "/mvc?logica=LogicaFormProfessores";
		}

	}

	private void inserirProfessor(Professor professor, Usuario usuario) {
		ProfessorBD professorBD = new ProfessorBD();
		professorBD.incluirProfessor(professor);

		UsuarioBD usuarioBD = new UsuarioBD();
		usuario.setId_perfil(professor.getId());
		usuarioBD.incluirUsuario(usuario);
	}

	private void alterarProfessor(Professor professor, Usuario usuario) {
		ProfessorBD professorBD = new ProfessorBD();
		professorBD.alterarProfessor(professor);

		UsuarioBD usuarioBD = new UsuarioBD();
		Usuario usu = usuarioBD.consultaUsuario(professor.getId(), "Professor");
		usu.setLogin(usuario.getLogin());
		usu.setSenha(usuario.getSenha());
		usuarioBD.alterarUsuario(usu);
	}

	private void excluirProfessor(int id) {
		ProfessorBD professorBD = new ProfessorBD();
		SistemaDAO sis = new SistemaDAO();
		Professor professor = (Professor) sis.find(Professor.class, id);
		UsuarioBD usuarioBD = new UsuarioBD();
		Usuario usu = usuarioBD.consultaUsuario(professor.getId(), "Professor");
		usuarioBD.removerUsuario(usu);
		professorBD.removerProfessor(professor);
	}

}
